﻿using QuanLyGiaoVuService.ReportServices;
using QuanLyGiaoVuUI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using QuanLyGiaoVuUI.Models.Mappers;
using QuanLyGiaoVuUI.Models.BanTinGiaoVu;
using QuanLyGiaoVuService.CommandServices;
using QuanLyGiaoVuDAL.DTO;
using QuanLyGiaoVuUI.Models.MonHoc;

namespace QuanLyGiaoVuUI.Controllers
{
    public class BanTinGiaoVuController : Controller
    {
        //
        // GET: /BanTinGiaoVu/
        private IBanTinCommandService _banTinCommandService;
        private IBanTinReportService _banTinReportService;
        public BanTinGiaoVuController(IBanTinCommandService banTinCommandService,
        IBanTinReportService banTinReportService            
            )
        {
            _banTinCommandService = banTinCommandService;
            _banTinReportService = banTinReportService;
        }
        public ActionResult Index()
        {
            IEnumerable<BanTinDTO> listBanTinDTO = _banTinReportService.GetAllBanTin();
            BanTinGiaoVuViewModel banTinGiaoVu = new BanTinGiaoVuViewModel();
            banTinGiaoVu.DanhSachBanTin = listBanTinDTO;
            return View(banTinGiaoVu);
        }

        [HttpGet]
        public ActionResult ThemBanTin()
        {
            return View();
        }
        [HttpPost]
        [ValidateInput(false)]
        public ActionResult ThemBanTin(String tieuDe, String noiDung, int quyen)
        {
            bool isSuccess = true;
            String message = "Thêm thành công!";
            if (tieuDe.Trim() == "" || noiDung.Trim() == "")
            {
                isSuccess = false;
                message = "Tiêu đề và Nội dung không được rỗng!";
                return Json(new { success = isSuccess, message = message });
            }
            BanTinDTO banTin = new BanTinDTO();
            banTin.ID = Guid.NewGuid();
            banTin.TieuDe = tieuDe;
            banTin.NoiDung = noiDung;
            banTin.NgayThem = DateTime.Now;
            banTin.QuyenTruyCap = quyen;
            
            BanTinDTO temp= _banTinCommandService.InsertBanTin(banTin);

            if (temp == null)
            {
                isSuccess = false;
                message = "Thêm không thành công";
            }
            return Json(new { success = isSuccess, message = message });
        }
        [HttpGet]
        public ActionResult CapNhatBanTin(Guid id)
        {
            BanTinDTO banTin = _banTinReportService.GetBanTinById(id);
            BanTinGiaoVuViewModel banTinGiaoVu = new BanTinGiaoVuViewModel();
            banTinGiaoVu.BanTin = banTin;
            return View(banTinGiaoVu);
        }
        [HttpPost]
        [ValidateInput(false)]
        public ActionResult CapNhatBanTin(String Id,String tieuDe, String noiDung, int quyen)
        {
            bool isSuccess = true;
            String message = "Cập nhật thành công!";
            if (tieuDe.Trim() == "" || noiDung.Trim() == "")
            {
                isSuccess = false;
                message = "Tiêu đề và Nội dung không được rỗng!";
                return Json(new { success = isSuccess, message = message });
            }
            BanTinDTO banTin = new BanTinDTO();
            banTin.ID = Guid.Parse(Id);
            banTin.TieuDe = tieuDe;
            banTin.NoiDung = noiDung;
            banTin.NgayThem = DateTime.Now;
            banTin.QuyenTruyCap = quyen;

            BanTinDTO temp = _banTinCommandService.UpdateBanTin(banTin);

            if (temp == null)
            {
                isSuccess = false;
                message = "Cập nhật không thành công";
            }
            return Json(new { success = isSuccess, message = message });
        }
        [HttpPost]
        public ActionResult DeleteBanTin(String listID)
        {
            bool isSuccess = true;
            String[] arrID = listID.Split(',');
            try
            {
                if (arrID.Length > 0)
                {
                    foreach (var id in arrID)
                    {
                        if (id != "")
                        {
                            isSuccess = _banTinCommandService.DeleteBanTin(Guid.Parse(id));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                isSuccess = false;
            }

            return Json(new { success = isSuccess });
        }
    }
}
